package com.ruoyi.planthopper.service;

import com.drew.imaging.ImageProcessingException;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.planthopper.domain.*;

import java.io.IOException;
import java.text.ParseException;
import java.util.List;

public interface InvestigateService {

    /**
     * 添加调查信息
     * @param investigateInfo
     * @return  返回的是图片路径
     * @throws ImageProcessingException
     * @throws IOException
     * @throws ParseException
     */
    public InvestigateInfo insertInvestigateInfo(InvestigateInfo investigateInfo) throws ImageProcessingException, IOException, ParseException;

    /**
     * 查询所有调查信息
     */
    public List<ReturnInvestigateInfo> selectInvestigateInfoAll();

    /**
     * 查询所有调查信息(分页)
     */
    public TableDataInfo selectInvestigateInfoAllPage(Integer pageNum, Integer pageSize);

    /**
     * 根据条件查询调查信息（图片信息）
     * @return
     */
    public List<ReturnInvestigateInfo> selectInvestigateInfoByCondition(SelectInvestigateInfo selectInvestigateInfo);

    /**
     * 根据条件查询调查信息（图片信息）分页
     * @return
     */
    public TableDataInfo selectInvestigateInfoByConditionPage(SelectInvestigateInfo selectInvestigateInfo,Integer pageNum, Integer pageSize);

    /**
     * 根据条件查询调查人人名
     * @return
     */
    public List<String> selectInvestigatorByCondition(SelectInvestigateInfo selectInvestigateInfo);

    /**
     * 根据条件查询地块
     * @return
     */
    public List<String> selectPlotByCondition(SelectInvestigateInfo selectInvestigateInfo);

    /**
     * 根据条件查询调查信息（图片信息）
     * 自己用的
     * @return
     */
    public List<ReturnInvestigateInfo> selectInvestigateInfoByConditionMyself(InvestigateInfo InvestigateInfo);

    /**
     * 查询所有的图片信息
     */
    public List<String> selectAllImagePath();


    /**
     * 根据条件返回播报信息
     * @param selectInvestigateInfo
     * @return
     */
    public List<BroadcastPlanthopperInfo> getBroadcastInfo(SelectInvestigateInfo selectInvestigateInfo) throws ParseException;

    /**
     * 根据条件返回百从信息
     * @param selectInvestigateInfo
     * @return
     */
    public ReturnBroadcastHundred getBroadcastHundred(SelectInvestigateInfo selectInvestigateInfo) throws ParseException;


    /**
     * 手动添加害虫信息
     * @param selectInvestigateInfo
     * @return
     */
    public int updateManualTag(SelectInvestigateInfo selectInvestigateInfo);


}
